#!/bin/bash
# copy from https://github.com/pretend-m/navicat_for_mac_reset
# Enhanced version with version detection and better error handling

set -e

# 检测 Navicat 版本
echo "正在检测 Navicat Premium 版本..."

if [ ! -f "/Applications/Navicat Premium.app/Contents/Info.plist" ]; then
    echo "错误：未找到 Navicat Premium 应用程序"
    exit 1
fi

file=$(defaults read /Applications/Navicat\ Premium.app/Contents/Info.plist)

regex="CFBundleShortVersionString = \"([^\.]+)"
[[ $file =~ $regex ]]

version=${BASH_REMATCH[1]}

echo "检测到 Navicat Premium 版本: $version"

# 根据版本确定 plist 文件路径
case $version in
    "17")
        plist_file=~/Library/Preferences/com.navicat.NavicatPremium.plist
        ;;
    "16")
        plist_file=~/Library/Preferences/com.navicat.NavicatPremium.plist
        ;;
    "15")
        plist_file=~/Library/Preferences/com.prect.NavicatPremium15.plist
        ;;
    *)
        echo "警告：版本 '$version' 未经测试，尝试使用默认路径"
        plist_file=~/Library/Preferences/com.navicat.NavicatPremium.plist
       ;;
esac

echo "正在重置试用时间..."

# 1. 删除 plist 文件中的哈希键
if [ -f "$plist_file" ]; then
    echo "步骤 1: 处理 plist 文件中的哈希键..."
    regex="([0-9A-Z]{32}) = "
    if [[ $(defaults read "$plist_file" 2>/dev/null || echo "") =~ $regex ]]; then
        hash=${BASH_REMATCH[1]}
        if [ ! -z "$hash" ]; then
            echo "  - 找到哈希键: $hash"
            defaults delete "$plist_file" "$hash" 2>/dev/null || echo "  - 删除失败或键不存在"
        fi
    else
        echo "  - 未找到哈希键"
    fi
else
    echo "步骤 1: plist 文件不存在，跳过"
fi

# 2. 删除应用数据目录中的隐藏哈希文件
navicat_data_dir=~/Library/Application\ Support/PremiumSoft\ CyberTech/Navicat\ CC/Navicat\ Premium/

if [ -d "$navicat_data_dir" ]; then
    echo "步骤 2: 处理应用数据目录中的隐藏文件..."
    regex="\.([0-9A-Z]{32})"
    hidden_files=$(ls -a "$navicat_data_dir" 2>/dev/null | grep '^\.' | grep -v '^\.\.?$' || echo "")
    
    if [[ $hidden_files =~ $regex ]]; then
        hash2=${BASH_REMATCH[1]}
        if [ ! -z "$hash2" ]; then
            echo "  - 找到隐藏文件: .$hash2"
            rm -f "$navicat_data_dir.$hash2" && echo "  - 删除成功" || echo "  - 删除失败"
        fi
    else
        echo "  - 未找到隐藏的哈希文件"
    fi
else
    echo "步骤 2: 应用数据目录不存在，跳过"
fi

# 3. 可选：完全删除 plist 文件（更彻底的重置）
# 取消下面的注释以启用完全删除
# if [ -f "$plist_file" ]; then
#     echo "步骤 3: 删除整个 plist 文件..."
#     rm -f "$plist_file" && echo "  - 删除成功" || echo "  - 删除失败"
# fi

echo ""
echo "✅ 重置完成！请重启 Navicat Premium。"
